#ifndef __BUILDING__
#define __BUILDING__
#include <vector>
#include <string>
using namespace std;

enum building_types{
	LAND,
	ROAD,
	RESIDENTIAL,
	POWER_STATION,
	INDUSTRY,
	SHOPS,
	WATER_STATION,
	ONE_WAY_ROAD,
	GARBAGE_INCINERATOR,
	BUILDING_TYPES_SIZE
};

class building{

    public:
		building(const string& name, int type):_name(name), _type(type), _cost(0),
			_building_time(0), _air_pollution(0), _water_pollution(0), _soil_pollution(0), _radioactive_pollution(0), _max_people(0), _water_consumption(0),
			_electricity_consumption(0), _size(1), _deterioration_factor(1), _waste(0){}

		building(): _name ("Land"), _type(0), _cost(0), _building_time(0),
			_air_pollution(0), _water_pollution(0), _soil_pollution(0), _radioactive_pollution(0), _max_people(0), _water_consumption(0),
			_electricity_consumption(0), _size(1), _deterioration_factor(1), _waste(0){}

		string get_name(){ return _name; }
		int get_type(){ return _type; }
		int get_cost(){ return _cost; }
		int get_building_time(){ return _building_time; }

		int get_air_pollution(){ return _air_pollution; }
		int get_water_pollution(){ return _water_pollution; }
		int get_soil_pollution(){ return _soil_pollution; }
		int get_radioactive_pollution(){ return _radioactive_pollution; }
		int get_water_consumption(){ return _water_consumption; }

		int get_max_people(){ return _max_people; }
		int get_electricity_consumption(){ return _electricity_consumption; }
		int get_size(){ return _size; }
		double get_deterioration_factor(){ return _deterioration_factor; }
		int get_waste(){ return _waste; }

		void set_name(const string& name){ _name = name; }
		void set_type(int type){ _type = type; }
		void set_cost(int cost){ _cost = cost; }
		void set_building_time(double building_time){ _building_time = building_time; }

		void set_air_pollution(int air_pollution){ _air_pollution = air_pollution; }
		void set_water_pollution(int water_pollution){ _water_pollution = water_pollution; }
		void set_soil_pollution(int soil_pollution){ _soil_pollution = soil_pollution; }
		void set_radioactive_pollution(int radioactive_pollution){
			_radioactive_pollution = radioactive_pollution;
		}

		void set_water_consumption(int water_consumption){ 
			_water_consumption = water_consumption;
		}
		void set_electricity_consumption(int electricity_consumption){
			_electricity_consumption = electricity_consumption;
		}
		void set_max_people(int max_people){ _max_people = max_people; }
		void set_size(int size){ _size = size; }
		void set_deterioration_factor(double deterioration_factor){
			_deterioration_factor = deterioration_factor;
		}
		void set_waste(int waste){ _waste = waste; }

	private:

		string _name;
		int _type;
		int _cost;
		double _building_time;
		
		int _air_pollution;
		int _water_pollution;
		int _soil_pollution;
		int _radioactive_pollution;
		
		int _max_people;
		int _water_consumption;
		int _electricity_consumption;
		int _size;
		int _waste;
		double _deterioration_factor;
};

vector<building> load_buildings();
#endif
